package com.kaifamiao.methods;

import java.io.File;

public class TraversalFile {

    public void traversal(File fod ) {
        // 若 fod 表示的路径在磁盘上存在
        if( fod.exists() ) {
            // 若 fod 所表示的是个文件
            if( fod.isFile() ) {
                System.out.println( "[文件] " + fod.getAbsolutePath() );
            }
            // 若 fod 所表示的是个目录
            if( fod.isDirectory() ){
                System.out.println( "[目录] " + fod.getAbsolutePath() );
                // 获得 fod 所表示目录中的所有子项目(含子目录和文件)
                File[] fods = fod.listFiles();
                for (int i = 0; i < fods.length; i++) {
                    File f = fods[i];
                    // 调用当前方法本身继续处理 f 所表示的 文件 或 目录
                    traversal( f );
                }
            }
        }
    }

    public static void main(String[] args) {
        // fod: File Or Directory
        File fod = new File( "D:/test" );
        // fod.exists() 用于 判断 fod 所表示的 目录 或 文件 在磁盘上是否存在
        System.out.println( fod.exists() );
        // fod.isFile() 判断 fod 是否表示 文件
        System.out.println( fod.isFile() );
        // fod.isDirectory() 判断 fod 是否表示 目录
        System.out.println( fod.isDirectory() );
        // 获得 fod 所表示的绝对路径
        System.out.println( fod.getAbsolutePath() );
        if( fod.isDirectory() ) {
            // 获得 fod 所表示目录中的所有子项目
            File[] fods = fod.listFiles();
            for (int i = 0; i < fods.length; i++) {
                System.out.println( fods[i] );
            }
        }

        System.out.println( "- ".repeat( 30 ) );

        TraversalFile tf = new TraversalFile();
        tf.traversal( fod );
    }
}
